Contents
  1. 1. Introduction
  2. 2. log4j的等级介绍
    1. 2.1. 5个标准的log levelDEBUG Level
    2. 2.2. 两个特殊log4j等级
    3. 2.3. 新增的trace level
    4. 2.4. 用户自定义的level(Custom log4j levels)
  3. 3. log4j的日志输出
  4. 4. log4j的等级继承规则
  5. 5. 参考资料
  6. 6. over

Introduction

今天看代码,用log4j实现自己的log类,对其中的isTraceEnabled很疑惑,然后了解了一下log4j的log level

log4j的等级介绍

5个标准的log levelDEBUG Level

  • DEBUG Level
    该等级为开发者DEBUG程序提供更多信息。
  • INFO Level
    该等级提供过程和指定的状态信息,更加适用于终端用户。This level is one level higher than DEBUG.
  • WARN Level
    该等级提供未知事件的警告信息,但是这些警告信息不会终止程序的运行。
  • ERROR Level
    提供导致严重错误或者导致不稳定状态的信息。This level is one level higher than WARN.
  • FATAL Level
    很不常用的一个等级。但是很容易理解:一旦你获得这类信息,你的应用程序就奔溃了。

两个特殊log4j等级

  • ALL Level
    用以开启所有等级的日志信息。一旦配置成功,系统将不会考虑等级限制。
  • OFF Level
    和ALL Level相反,用来关闭所有log信息。

    新增的trace level

    TRACE Level
    该特性是在log4j 1.2.12中开始引入的。该等级比DEBUG等级提供更多详细信息,处于log4j日志等级的顶端。

用户自定义的level(Custom log4j levels)

对于常见的应用来说,log4j的日志等级已经足够。在某些特殊情况下,你可以通过继承org.apache.log4j.Level来实现自定义日志等级。

log4j的日志输出

每当创建一个logger时,一般情况下自己指定日志等级。日志会把大于等于该等级的信息都输出来。标准log4j的日志等级如下图:

log4j的等级继承规则

如果没有在初始化logger时指定日志等级,则新logger会按照以下规则进行继承。
这里用一个例子说明更直接:

比如有一个未指派日志等级的com.foo.bar包,那么它会继承com.foo包的日志等级。如果com.foo依然没有指定日志等级,那么它会继承log4j的基本等级(root level),而log4j的基本等级总是可以获得,默认为DEBUG Level

参考资料

参考英文文档:http://javapapers.com/log4j/log4j-levels/

over

Contents
  1. 1. Introduction
  2. 2. log4j的等级介绍
    1. 2.1. 5个标准的log levelDEBUG Level
    2. 2.2. 两个特殊log4j等级
    3. 2.3. 新增的trace level
    4. 2.4. 用户自定义的level(Custom log4j levels)
  3. 3. log4j的日志输出
  4. 4. log4j的等级继承规则
  5. 5. 参考资料
  6. 6. over